#ifndef H_ARBRE
#define H_ARBRE
#include "Noeud.hpp"
#include "Region.hpp"
#include <QPixmap>
#include <QImage>

/*classe qui represente la structure de donnee de l'image*/
class Arbre{
	private:
    /*Noeud racine de l'arbre*/
		Noeud * m_racine;
	protected:
	public:
                /*Constructeur par défaut d'un arbre*/
                Arbre();
                /*Constructeur d'un arbre qui prend en parametre une image et l'attribue a sa racine, une nouvelle fenetre est cree*/
		Arbre(const Image & im);
                /*destructeur de la classe Arbre*/
		~Arbre();
                /*Procedure qui utilise opencv pour afficher le maillage du decoupage du split*/
		void afficheMaillage(IplImage *img);
                 /*Procedure qui utilise opencv pour afficher les regions apres un merge, une nouvelle fenetre est cree*/
		void afficheRegion(CvSize size);
                /*Procedure qui divise l'image rpresentee par l'arbre en plusieurs image en fonction de l'homogéneité des zones*/
		void split();
                /*Procedure à utiliser apres le split pour refusionner eventuelemnt certaines images(rectangulaire) en region (liste d'image)*/
		void merge();
                /*Fonction qui retourne une Qpixmap pour l'interface graphique qui représente l'image.
                    a apeler apres le merge*/
                QPixmap getPixmap();
};
#endif
